package me.zhengjie.modules.website.domain;

import java.io.Serializable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.validation.constraints.NotBlank;
import lombok.Data;
import me.zhengjie.base.BaseEntity;

import javax.persistence.*;

/**
 * 预约类型实体类
 * 该类用于定义预约类型的属性，包括类型、预约须知、详情和其它信息等。
 *
 * @author system
 * @since 2024-12-20 22:31:05
 */
@Entity
@Data
@Table(name = "ws_reservation_type")
@ApiModel(value = "ReservationType", description = "预约类型管理")
public class ReservationType extends BaseEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 预约类型ID
     * 唯一标识每个预约类型的ID，通常是自增长的主键。
     */
    @Column(name = "rt_id")
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @ApiModelProperty(value = "预约类型ID", required = true, example = "1")
    private Long id;

    /**
     * 预约类型名称
     * 例如：会议室预约、场地预约等。
     */
    @Column(name = "type")
    @ApiModelProperty(value = "预约类型名称", required = true, example = "会议室预约")
    private String type;

    /**
     * 预约须知
     * 包含有关预约的注意事项，例如预约时长、收费标准等。
     */
    @Column(name = "notice")
    @ApiModelProperty(value = "预约须知", required = true, example = "请提前3天预约，最多可预约2小时")
    private String notice;

    /**
     * 预约详情
     * 包括更详细的预约信息，例如使用限制、预约时间等。
     */
    @Column(name = "details")
    @ApiModelProperty(value = "预约详情", required = true, example = "每次预约时长最多2小时，不可超时")
    private String details;

    /**
     * 其他附加信息
     * 存储一些不属于上述字段的信息，比如提供的额外服务等。
     */
    @Column(name = "others")
    @ApiModelProperty(value = "其他附加信息", required = true, example = "提供投影仪和白板")
    private String others;
}
